home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / seq_file.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-09  |  2.7 KB  |  97 lines

  1. #ifndef _LINUX_SEQ_FILE_H
  2. #define _LINUX_SEQ_FILE_H
  3.  
  4. #include <linux/types.h>
  5. #include <linux/string.h>
  6. #include <linux/mutex.h>
  7. #include <linux/cpumask.h>
  8. #include <linux/nodemask.h>
  9.  
  10. struct seq_operations;
  11. struct file;
  12. struct path;
  13. struct inode;
  14. struct dentry;
  15.  
  16. struct seq_file {
  17.     char *buf;
  18.     size_t size;
  19.     size_t from;
  20.     size_t count;
  21.     loff_t index;
  22.     loff_t read_pos;
  23.     u64 version;
  24.     struct mutex lock;
  25.     const struct seq_operations *op;
  26.     void *private;
  27. };
  28.  
  29. struct seq_operations {
  30.     void * (*start) (struct seq_file *m, loff_t *pos);
  31.     void (*stop) (struct seq_file *m, void *v);
  32.     void * (*next) (struct seq_file *m, void *v, loff_t *pos);
  33.     int (*show) (struct seq_file *m, void *v);
  34. };
  35.  
  36. #define SEQ_SKIP 1
  37.  
  38. int seq_open(struct file *, const struct seq_operations *);
  39. ssize_t seq_read(struct file *, char __user *, size_t, loff_t *);
  40. loff_t seq_lseek(struct file *, loff_t, int);
  41. int seq_release(struct inode *, struct file *);
  42. int seq_escape(struct seq_file *, const char *, const char *);
  43. int seq_putc(struct seq_file *m, char c);
  44. int seq_puts(struct seq_file *m, const char *s);
  45.  
  46. int seq_printf(struct seq_file *, const char *, ...)
  47.     __attribute__ ((format (printf,2,3)));
  48.  
  49. int seq_path(struct seq_file *, struct path *, char *);
  50. int seq_dentry(struct seq_file *, struct dentry *, char *);
  51. int seq_path_root(struct seq_file *m, struct path *path, struct path *root,
  52.           char *esc);
  53. int seq_bitmap(struct seq_file *m, unsigned long *bits, unsigned int nr_bits);
  54. static inline int seq_cpumask(struct seq_file *m, cpumask_t *mask)
  55. {
  56.     return seq_bitmap(m, mask->bits, NR_CPUS);
  57. }
  58.  
  59. static inline int seq_nodemask(struct seq_file *m, nodemask_t *mask)
  60. {
  61.     return seq_bitmap(m, mask->bits, MAX_NUMNODES);
  62. }
  63.  
  64. int seq_bitmap_list(struct seq_file *m, unsigned long *bits,
  65.         unsigned int nr_bits);
  66.  
  67. static inline int seq_cpumask_list(struct seq_file *m, cpumask_t *mask)
  68. {
  69.     return seq_bitmap_list(m, mask->bits, NR_CPUS);
  70. }
  71.  
  72. static inline int seq_nodemask_list(struct seq_file *m, nodemask_t *mask)
  73. {
  74.     return seq_bitmap_list(m, mask->bits, MAX_NUMNODES);
  75. }
  76.  
  77. int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
  78. int single_release(struct inode *, struct file *);
  79. void *__seq_open_private(struct file *, const struct seq_operations *, int);
  80. int seq_open_private(struct file *, const struct seq_operations *, int);
  81. int seq_release_private(struct inode *, struct file *);
  82.  
  83. #define SEQ_START_TOKEN ((void *)1)
  84.  
  85. /*
  86.  * Helpers for iteration over list_head-s in seq_files
  87.  */
  88.  
  89. extern struct list_head *seq_list_start(struct list_head *head,
  90.         loff_t pos);
  91. extern struct list_head *seq_list_start_head(struct list_head *head,
  92.         loff_t pos);
  93. extern struct list_head *seq_list_next(void *v, struct list_head *head,
  94.         loff_t *ppos);
  95.  
  96. #endif
  97.